package day26.homework;

public class Test3_DivisionByZero {
    
    // (1) 编写方法：division()：要求执行10/0操作，并使用异常处理机制处理可能产生的异常
    // 该方法演示了try-catch异常处理机制，用于捕获并处理算术异常
    public static void division() {
        try {
            // 尝试执行除零操作，这将引发ArithmeticException异常
            int result = 10 / 0;
            // 此行不会执行，因为上一行会抛出异常
            System.out.println("结果是：" + result);
        } catch (ArithmeticException e) {
            // 捕获ArithmeticException类型的异常（除零错误）
            // getMessage()方法返回异常的详细信息
            System.out.println("捕获到异常：" + e.getMessage());
        }
    }
    
    // (3) 修改division()：执行10/0不变，但不在方法中处理产生的异常，改将异常抛出
    // 使用throws关键字声明该方法可能抛出ArithmeticException异常
    // 调用此方法的代码需要处理这个异常
    public static void divisionWithThrows() throws ArithmeticException {
        // 执行除零操作，不使用try-catch处理异常
        // 而是将异常抛给调用者处理
        int result = 10 / 0;
        // 此行不会执行，因为上一行会抛出异常
        System.out.println("结果是：" + result);
    }
    
    public static void main(String[] args) {
        // (2) 编写main()：调用division()
        // 测试第一种异常处理方式：在方法内部处理异常
        System.out.println("第一次调用division()方法：");
        division();
        
        // (4) 修改main()：调用division()并处理其抛出的异常
        // 测试第二种异常处理方式：在调用方法时处理异常
        System.out.println("\n第二次调用带throws的division()方法：");
        try {
            // 调用声明了throws的divisionWithThrows()方法
            divisionWithThrows();
        } catch (ArithmeticException e) {
            // 捕获并处理divisionWithThrows()方法抛出的异常
            System.out.println("在main方法中捕获到异常：" + e.getMessage());
        }
    }
}